iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
0

特殊型別 - Any


由於昨天是介紹基礎型別,所以今天想要來順便介紹一下在Swift世界裡面的一個特別型別Any。

這個Any的強大之處在於昨天介紹的基礎型別裡的任何一個型別,都可以用Any作為型別。

舉凡Int、Double、String、Character、Bool都可以用Any代替,是不是很方便?
另外像是還沒有介紹到的集合型別Array、Sets、Dictionary也都可以用Any代替
https://ithelp.ithome.com.tw/upload/images/20190919/201200636iLMoCFROy.png

是否有發現上圖的基礎型別使用Any替代後,少了哪一位? 沒錯就是Float

如同昨天有提到的,系統預設裡只要有小數點的值,在沒有型別標註的情況下,

都會自動被判定為Double,所以這邊也不例外喔,因為Float需要指定型別,

所以當Any型別設為小數點數值的時候,這個型態的精準度是參考Double的15位數。

不過不用太在意,因為大部分的開發者除了新手外,不太會特別使用型別標註,

也就是說Float是比較少被用到的,當然可能在大型開發專案裡面或許會有記憶體或者更深的考量,

不過就我們新手練習的現階段而已,只要記得這兩者的不同特性以及Any的特性即可。

最後你是否會有疑問,那幹嘛要有這麼多基礎型別,都用Any不就好了?如果這麼方便就好了(笑)

其實在使用Any這個型別的時候,最終還是要透過as或是其他的方式把參數轉為原本的型別,

所以說這只是一個暫時的型別,方便儲存一些未被定義的型別參數,這種時候Any就很方便,

但實際上,如果有另一個Int型別想要做相加的動作,雖然此時的Any型別裡面儲存的是個整數,
https://ithelp.ithome.com.tw/upload/images/20190919/20120063BPYVWBXMmp.png

系統也會告知Binary operator '+' cannot be applied to operands of type 'Int' and 'Any'

也就是因為將型別Int跟Any做相加的動作,這種時候還是要透過轉換型別的部分才可以相加。
https://ithelp.ithome.com.tw/upload/images/20190919/20120063XK4h0ZIZn8.png

型別轉換的部分在接下來才會慢慢接觸到,現在只要先有個概念就好:)


上一篇
從零開始的學習之旅-Day3
下一篇
從零開始的學習之旅-Day5
系列文
【自我挑戰】一步一腳印,每天進步一點的Swift自學之路。11
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言